gtkicontheme: Don’t emit warning about fallback theme when in unit tests
authorPhilip Withnall <philip.withnall@collabora.co.uk>
Wed, 3 Aug 2016 20:12:27 +0000 (21:12 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 6 Aug 2016 21:13:25 +0000 (17:13 -0400)
In order to eliminate g_test_expect_message() (which doesn’t work with
G_LOG_USE_STRUCTURED), make the warning about the fallback theme not
existing be conditional on the icon theme search path containing a
system path. Any application code which modifies the search path does so
through appends and prepends, so this should not affect whether the
warning is emitted in production.

https://bugzilla.gnome.org/show_bug.cgi?id=769485

testsuite/gtk/icontheme.c

index a70f75b240fe924a6192272574d2c63392176ffc..cf466471f31b817ab6bd9bfe5299a0a677359cb7 100644 (file)
@@ -201,15 +201,6 @@ test_basics (void)
 {
   /* just a basic boring lookup so we know everything works */
   assert_icon_lookup ("simple", 16, 0, "/icons/16x16/simple.png");
-
-  /* The first time an icon is looked up that doesn't exist, GTK spews a 
-   * warning.
-   * We make that happen right here, so we can get rid of the warning 
-   * and do failing lookups in other tests.
-   */
-  g_test_expect_message ("Gtk", G_LOG_LEVEL_WARNING, "Could not find the icon*");
-  assert_icon_lookup_fails ("this-icon-totally-does-not-exist", 16, 0);
-  g_test_assert_expected_messages ();
 }
 
 static void
@@ -771,11 +762,33 @@ test_nonsquare_symbolic (void)
   g_object_unref (info);
 }
 
+static GLogWriterOutput
+log_writer_drop_warnings (GLogLevelFlags   log_level,
+                          const GLogField *fields,
+                          gsize            n_fields,
+                          gpointer         user_data)
+{
+  gboolean *ignore_warnings = user_data;
+
+  if (log_level == G_LOG_LEVEL_WARNING && *ignore_warnings)
+    return G_LOG_WRITER_HANDLED;
+
+  return g_log_writer_default (log_level, fields, n_fields, user_data);
+}
+
 int
 main (int argc, char *argv[])
 {
+  gboolean ignore_warnings = TRUE;
+
   gtk_test_init (&argc, &argv);
 
+  /* Ignore the one-time warning that the fallback icon theme can’t be found
+   * (because we’ve changed the search paths). */
+  g_log_set_writer_func (log_writer_drop_warnings, &ignore_warnings, NULL);
+  assert_icon_lookup_fails ("this-icon-totally-does-not-exist", 16, 0);
+  ignore_warnings = FALSE;
+
   g_test_add_func ("/icontheme/basics", test_basics);
   g_test_add_func ("/icontheme/lookup-order", test_lookup_order);
   g_test_add_func ("/icontheme/generic-fallback", test_generic_fallback);